package jdbc;

import java.io.*;
import java.sql.*;

/**
 * 测试BLOB 二进制大对象的使用
 */
public class Demo10 {
    public static void main(String[] args) {
        Connection conn=null;
        PreparedStatement ps=null;
        ResultSet rs=null;
        InputStream is=null;
        OutputStream os=null;

        try {
            //加载驱动类
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc?serverTimezone=Asia/Shanghai","root","123456");
            String sql="insert into t_user (username,pwd,regTime,myInfo,headImg) values(?,?,?,?,?)";
            //向数据库中插入文本
//            ps=conn.prepareStatement(sql);
//            ps.setString(1,"zzh");
//            ps.setString(2,"123");
//            ps.setTimestamp(3,new Timestamp(System.currentTimeMillis()));
//            ps.setClob(4,new BufferedReader(new InputStreamReader(new ByteArrayInputStream("大家好,我系渣渣辉".getBytes()))));
//            ps.setBlob(5,new FileInputStream("C:\\Users\\lenovo\\Pictures\\Camera Roll\\lena.png"));
//            ps.executeUpdate();
            //ps.setClob(4,new FileReader(new File("d:/a.txt")));//使用流读取文件数据到数据库
            //将程序中的字符串输入到数据库中
            //ps.setClob(4,new BufferedReader(new InputStreamReader(new ByteArrayInputStream("大家好,我系渣渣辉".getBytes()))));
            //ps.executeUpdate();

            //读取数据库中的文本
            ps=conn.prepareStatement("select * from t_user where id=?");
            ps.setObject(1,20022);
            rs=ps.executeQuery();

            while (rs.next()){
                Blob b=rs.getBlob("headImg");
                is=b.getBinaryStream();
                os=new FileOutputStream("C:\\Users\\lenovo\\Pictures\\Camera Roll\\lena.jpg");
                int temp=0;
                while ((temp=is.read())!=-1){
//                    System.out.print((char) temp);
                    os.write(temp);
                }
                System.out.println();
            }
            is.close();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if (rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (ps!=null){
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
